The “elevators-sequencedstrips” domain is about operating a set of elevators (some slow, some fast) within a building that has floors numbered from 0 to N. The building may be divided into blocks of floors, and each type of elevator can only reach certain floors:
• Fast elevators generally stop only at specific floors (e.g. multiples of M/2).  
• Slow elevators stop at every floor of a particular block.  

Passengers need to get from their current floor to a destination floor. Each passenger has to board an elevator, ride to the target floor, and then leave. The domain includes constraints on each elevator’s capacity (how many passengers it can hold) and which floors each elevator can reach.

Actions:

1) move-up-slow  
   • Purpose: Move a slow elevator from its current floor up to a higher floor (which must be reachable by this slow elevator).  
   • Precondition:  
     – The elevator is currently at some floor f1.  
     – There is another floor f2 somewhere above f1.  
     – The elevator can reach floor f2.  
   • Effect:  
     – The elevator is no longer at floor f1 and is now at floor f2.  
     – A travel cost, based on the slow elevator’s speed and distance (travel-slow f1 f2), is added to the total cost.  
   • Example usage: (move-up-slow elevatorA floor2 floor3)  

2) move-down-slow  
   • Purpose: Move a slow elevator from its current floor down to a lower floor.  
   • Precondition:  
     – The elevator is at floor f1.  
     – There is another floor f2 somewhere below f1.  
     – The elevator can reach floor f2.  
   • Effect:  
     – The elevator moves down from f1 to f2.  
     – A travel cost slow travel from f1 to f2 is added to the total cost.  
   • Example usage: (move-down-slow elevatorA floor3 floor2)  

3) move-up-fast  
   • Purpose: Move a fast elevator from a floor f1 to a higher floor f2 if the fast elevator can stop there.  
   • Precondition:  
     – The elevator is currently at floor f1.  
     – f2 is above f1 (above f1 f2).  
     – Floor f2 is reachable for the fast elevator (reachable-floor ?lift f2).  
   • Effect:  
     – The elevator leaves f1 and arrives at f2.  
     – The cost incurred (travel-fast f1 f2) is added to the total cost.  
   • Example usage: (move-up-fast fastElev1 floor4 floor8)  

4) move-down-fast  
   • Purpose: Move a fast elevator from its current floor f1 down to a lower floor f2 if the fast elevator can stop there.  
   • Precondition:  
     – The fast elevator is at floor f1.  
     – Floor f2 is somewhere below f1.  
     – f2 is reachable for that elevator.  
   • Effect:  
     – The elevator ends up at f2, leaving f1.  
     – Adds the cost of traveling fast from f1 to f2 to the total.  
   • Example usage: (move-down-fast fastElev1 floor8 floor4)  

5) board  
   • Purpose: A passenger at a floor boards a specific elevator, as long as it has capacity for the additional passenger.  
   • Precondition:  
     – The elevator is at floor f, and the passenger is also at floor f.  
     – The elevator has capacity n1 with the possibility to go to n2, and can-hold n2.  
   • Effect:  
     – The passenger is no longer at the floor f.  
     – The passenger is now on board this elevator.  
     – The elevator’s count of passengers is updated from n1 to n2.  
   • Example usage: (board passenger1 elevatorA floor2 n1 n2)  

6) leave  
   • Purpose: A passenger on an elevator leaves it at a given floor.  
   • Precondition:  
     – The elevator is at floor f.  
     – The passenger is currently boarded on that elevator.  
     – The elevator has a certain passenger count n1, and there is a valid previous count n2 .  
   • Effect:  
     – The passenger leaves the elevator and is now at the floor f.  
     – The passenger is no longer boarded on the elevator.  
     – The elevator’s passenger count changes from n1 to n2.  
   • Example usage: (leave passenger1 elevatorA floor5 n1 n2)  